package com.showmaker.mapper;

import com.showmaker.bean.OrderSetting;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface OrderSettingMapper {
    /**
     * 添加预约
     * @param orderSetting 预约的相关信息
     */
    public void add(OrderSetting orderSetting);

    /**
     * 更新预约
     * @param orderSetting 要更新的预约数据
     */
    public void edit(OrderSetting orderSetting);

    /**
     * 通过日期，查看这一天是否已经添加了预约信息，如果已经有了预约信息/
     * 则进行修改操作；如果没有预约信息，则进行添加操作
     * @param orderDate 预约日期
     * @return
     */
    public long count(Date orderDate);

    /**
     * 查询某一个月中的相关预约信息
     * @param map 封装了一个月的开始日期和一个月的结束日期
     * @return 返回这个月相关的所有预约记录
     */
    public List<OrderSetting> getOrderSetting(Map<String, String> map);

    /**
     * 查询给定的日期这一天是否有设置预约人数
     * @param date 指定的日期
     * @return 返回这天的预约人数
     */
    public int getPreOrderNumber(String date);

    /**
     * 查询给定的日期这一天已经预约的人数
     * @param date 指定的日期
     * @return 返回这一天已经预约的人数
     */
    public int getReservationsNumber(String date);

    /**
     * 更新预约人数操作
     * @param map map中存放的是预约日期和这一天的预约人数
     * @return 返回更新后的结果
     */
    public int updatePreOrderNumber(Map map);

    /**
     * 添加预约人数操作
     * @param map map中存放的是预约日期和这一天的预约人数
     * @return 返回添加的条数
     */
    public int insertPreOrderNumber(Map map);

    /**
     * 通过日期字符串查询某一天的预约设置
     * @param orderDate 日期字符串
     * @return 返回给定日期的预约相关信息
     */
    public OrderSetting getOrderSettingByDate(String orderDate);

    /**
     * 更新当天已经预约的人数
     * @param orderSetting 包含要更新的人数
     */
    public void updateReservations(OrderSetting orderSetting);
}
